home *** CD-ROM | disk | FTP | other *** search
/ InterCD 2001 May / may_2001.iso / intercd / root / Multimedia / ^DivX_Article / virtualdub / VirtualDub-source-1_4d / VideoSequenceCompressor.h < prev    next >
Encoding:
C/C++ Source or Header  |  2001-03-20  |  1.7 KB  |  61 lines

  1. //    VirtualDub - Video processing and capture application
  2. //    Copyright (C) 1998-2001 Avery Lee
  3. //
  4. //    This program is free software; you can redistribute it and/or modify
  5. //    it under the terms of the GNU General Public License as published by
  6. //    the Free Software Foundation; either version 2 of the License, or
  7. //    (at your option) any later version.
  8. //
  9. //    This program is distributed in the hope that it will be useful,
  10. //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12. //    GNU General Public License for more details.
  13. //
  14. //    You should have received a copy of the GNU General Public License
  15. //    along with this program; if not, write to the Free Software
  16. //    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  17.  
  18. #ifndef f_VIDEOSEQUENCECOMPRESSOR_H
  19. #define f_VIDEOSEQUENCECOMPRESSOR_H
  20.  
  21. #include <windows.h>
  22. #include <vfw.h>
  23.  
  24. class VideoSequenceCompressor {
  25. public:
  26.     VideoSequenceCompressor();
  27.     ~VideoSequenceCompressor();
  28.  
  29.     void init(HIC hic, BITMAPINFO *pbiInput, BITMAPINFO *pbiOutput, long lQ, long lKeyRate);
  30.     void setDataRate(long lDataRate, long lUsPerFrame, long lFrameCount);
  31.     void start();
  32.     void dropFrame();
  33.     void *packFrame(void *pBits, bool *pfKeyframe, long *plSize);
  34.     void finish();
  35.  
  36.     bool isSequenceIntelligent() {
  37.         return !!(dwFlags & VIDCF_COMPRESSFRAMES);
  38.     }
  39.  
  40.     long getMaxSize() {
  41.         return lMaxPackedSize;
  42.     }
  43.  
  44. private:
  45.     HIC            hic;
  46.     DWORD        dwFlags;
  47.     BITMAPINFO    *pbiInput, *pbiOutput;
  48.     char        *pOutputBuffer, *pPrevBuffer;
  49.     long        lFrameNum, lKeyRate, lQuality;
  50.     long        lKeyRateCounter;
  51.     long        lMaxFrameSize;
  52.     long        lMaxPackedSize;
  53.     bool        fCompressionStarted;
  54.     long        lSlopSpace;
  55.  
  56.     void        *pConfigData;
  57.     int            cbConfigData;
  58. };
  59.  
  60. #endif
  61.